
package com.dg.acb.utils;
import android.content.Context;
import android.util.Log;

public class LogUtil {
    public static final String LOG_OPEN_KEY = "nubia_cloud_log_open";
    public static final String UPDATE_STYLE = "nubia_cloud_update_style";
    public static final String UPDATE_SLIENT_STYLE = "nubia_cloud_update_slient_style";
    public static final String ACCOUNT_STYLE = "nubia_cloud_account_style";
    public static final String REYUN_STYLE = "nubia_cloud_reyun_style";
    public static final String ALI_CHECK_STYLE = "nubia_cloud_ali_check_style";
    public static boolean DEBUG = true;
    private static boolean sIsInit = false;
    private static final String TAG = "dg_acb";
    public static void initLogSwitch(final Context context) {
        if (!sIsInit) {
            sIsInit = true;
        }
    }

    public static void e(String msg) {
        String message = createMessage(msg);
        Log.e(TAG, message);
    }

    public static void i(String msg) {
        String message = createMessage(msg);
        Log.i(TAG, message);
    }

    public static void d(String msg) {
        String message = createMessage(msg);
        Log.d(TAG, message);
    }

    public static void d_tag(String TAG,String msg) {
        String message = createMessage(msg);
        Log.d(TAG, message);
    }

    public static void d_tag1(String TAG,String msg) {
        if(DEBUG){
            String message = createMessage(msg);
            Log.d(TAG, message);
        }
    }

    public static void d_tag4(String TAG,String msg) {
        if(DEBUG){
            String message = createMessage(msg);
            Log.d("nubiaCloud1", "["+TAG+"]"+message);
        }
    }

    public static void w(String msg) {
        String message = createMessage(msg);
        Log.w(TAG, message);
    }

    public static void e(String tag, String msg) {
        String message = createMessage(msg);
        Log.e(TAG, "[" + tag + "] " + message);
    }

    public static void i(String tag, String msg) {
        String message = createMessage(msg);
        Log.i(TAG, "[" + tag + "] " + message);
    }

    public static void d(String tag, String msg) {
        String message = createMessage(msg);
        Log.d(TAG, "[" + tag + "] " + message);
    }

    public static void w(String tag, String msg) {
        String message = createMessage(msg);
        Log.w(TAG, "[" + tag + "] " + message);
    }

    public static void v(String tag, String msg) {
        String message = createMessage(msg);
        Log.v(TAG, "[" + tag + "] " + message);
    }

    public static void w(String tag, String msg, Throwable tr) {
        String message = createMessage(msg);
        Log.w(TAG, "[" + tag + "] " + message, tr);
    }

    private static String getFunctionName() {
        StackTraceElement[] sts = Thread.currentThread().getStackTrace();
        if (null == sts) {
            return null;
        }
        for (StackTraceElement st : sts) {
            if (st.isNativeMethod()) {
                continue;
            }
            if (st.getClassName().equals(Thread.class.getName())) {
                continue;
            }
            if (st.getClassName().equals(LogUtil.class.getName())) {
                continue;
            }
            return "[" + Thread.currentThread().getName() + "(" + Thread.currentThread().getId()
                    + "):" + st.getFileName() + ":" + st.getLineNumber() + "]";
        }
        return null;
    }

    private static String createMessage(String msg) {
        String functionName = getFunctionName();
        String message = (functionName == null ? msg : (functionName + " - " + msg));
        return message;
    }
}
